\section{Python脚本常用功能}
常用对象和函数
\begin{lstlisting}[language=Python]
    sys.argv
    len(sys.argv)
    os.system()
    time.sleep()
    sys.exit()
    os.path.exists()
    os.path.isfile()
    os.path.split()
    os.path.basename()
    __file__
\end{lstlisting}

\subsection{检查文件是否存在}
os.path.isfile(filename)

检查文件是否可执行:
\begin{verbatim}
fpath = commands.getoutput('which %s'% handler)
if not (os.path.isfile(fpath) and os.access(fpath, os.X_OK)):
\end{verbatim}
\subsection{当前脚本名字}
\begin{lstlisting}[language=Python]
os.path.basename(sys.argv[0])
os.path.basename(__file__)
os.path.split(sys.argv[0])[1]
\end{lstlisting}

\subsection{当前路径}
\begin{lstlisting}[language=Python]
    os.path.dirname(__file__)
\end{lstlisting}

\subsection{执行外部程序}
\begin{verbatim}
os.system(cmd)
commands.getstatusoutput(cmd)
subprocess.Popen([],...)
pexpect.spawn()
\end{verbatim}
subprocess模块定义了Popen类，试图取代os.system,os.spawn,os.popen, popen2,commands等模块。除Popen外，还定义了一些简洁函数call, check\_call, check\_output.详见subprocess文档。

pexpect包含的spawn类具有强大的交互功能，适用于ssh，scp等工具。

如果需要非阻塞式地获取进程的输出，似乎只能用subprocess.Popen或pexpect.spawn。

\section{Python科研仿真程序常用功能}

\subsection{浮点除法}
\begin{lstlisting}
from __future__ import division
\end{lstlisting}
即可让除法默认为浮点除法。
\subsection{随机数}
random模块提供了random,uniform, shuffle等函数。
















